<?php
class Application_Model_Nav
{
	protected $_other;
    protected $_tag;
	protected $_target;
    protected $_auto;
    protected $_hide;
    protected $_sort;
    protected $_link;
    protected $_name;
    
    protected $_id;

    public function __construct(array $options = null)
    {
        if (is_array($options)) {
            $this->setOptions($options);
        }
    }

    public function __set($name, $value)
    {
        $method = 'set' . $name;
        if (('mapper' == $name) || !method_exists($this, $method)) {
            throw new Exception('Invalid Nav property');
        }
        $this->$method($value);
    }

    public function __get($name)
    {
        $method = 'get' . $name;
        if (('mapper' == $name) || !method_exists($this, $method)) {
            throw new Exception('Invalid Nav property');
        }
        return $this->$method();
    }

    public function setOptions(array $options)
    {
        $methods = get_class_methods($this);
        foreach ($options as $key => $value) {
            $method = 'set' . ucfirst($key);
            if (in_array($method, $methods)) {
                $this->$method($value);
            }
        }
        return $this;
    }

    public function setOther($text)
    {
        $this->_other = (string) $text;
        return $this;
    }

    public function getOther()
    {
        return $this->_other;
    }

    public function setTag($tag)
    {
        $this->_tag = (string) $tag;
        return $this;
    }

    public function getTag()
    {
        return $this->_tag;
    }

    public function setTarget($target)
    {
        $this->_target = (int)$target;
        return $this;
    }

    public function getTarget()
    {
        return $this->_target;
    }

    public function setAuto($auto)
    {
        $this->_auto = (int)$auto;
        return $this;
    }

    public function getAuto()
    {
        return $this->_auto;
    }  
    
	public function setHide($hide)
    {
        $this->_hide = (int)$hide;
        return $this;
    }

    public function getHide()
    {
        return $this->_hide;
    }
    
	public function setSort($sort)
    {
        $this->_sort = (int)$sort;
        return $this;
    }    

    public function getSort()
    {
        return $this->_sort;
    }
    
	public function setLink($text)
    {
        $this->_link = (string) $text;
        return $this;
    }

    public function getLink()
    {
        return $this->_link;
    }
    
	public function setName($name)
    {
        $this->_name = (string) $name;
        return $this;
    }

    public function getName()
    {
        return $this->_name;
    }
    
    public function setId($id)
    {
        $this->_id = (int) $id;
        return $this;
    } 

    public function getId()
    {
        return $this->_id;
    }	
}
?>